--- title: "L1-104 九宫格" created: 2025-11-28 tags: - 算法 --- # L1-104 九宫格 ## 题目 [L1-104 九宫格](https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7?problemSetProblemId=1781658570803388423&page=1) ![[image-fdf4577f.png]] ## 思路分析 ## 代码实现 ```typescript #include using namespace std; #define endl '\n' using ll = long long; using ull = unsigned long long; using PII = pair; using Pll = pair; int dx[4]= {-1,0,1,0},dy[4]= {0,1,0,-1}; const int inf = 0x3f3f3f3f; bool check(vector>& grid) { for (int i = 0; i < 9; ++i) { set row, col; for (int j = 0; j < 9; ++j) { int r = grid[i][j], c = grid[j][i]; if (r < 1 || r > 9 || row.count(r)) return false; if (c < 1 || c > 9 || col.count(c)) return false; row.insert(r); col.insert(c); } } for (int i = 0; i < 9; i += 3) { for (int j = 0; j < 9; j += 3) { set box; for (int dx = 0; dx < 3; ++dx) { for (int dy = 0; dy < 3; ++dy) { int val = grid[i + dx][j + dy]; if (val < 1 || val > 9 || box.count(val)) return false; box.insert(val); } } } } return true; } int main() { ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); int n;cin >> n; while (n--) { vector> grid(9, vector(9)); for (int i = 0; i < 9; ++i) for (int j = 0; j < 9; ++j) cin >> grid[i][j]; cout << (check(grid) ? 1 : 0) << '\n'; } return 0; } ``` ## 同类题型 ## 视频讲解 --- ⬅️ [[L1-103 整数的持续性|L1-103 整数的持续性]] 🏠 [[00-天梯赛]] ➡️ [[L2|L2]]